//
// 由两个栈组成的队列
// Created by Liming Shao on 11/3/2017.
//

#include <iostream>
#include "A005.h"

void A005::add(int input) {
    stackA.push(input);
}

int A005::poll() {
    if(stackB.empty() &&stackA.empty()){
        std::cout << "Queue is empty!";
        return -999;
    }

    if(stackB.empty()){
        while(!stackA.empty()){
            stackB.push((stackA.top()));
            stackA.pop();
        }
    }
    int ret = stackB.top();
    stackB.pop();
    return ret;
}

int A005::peek() {
    if(stackB.empty() &&stackA.empty()){
        std::cout << "Queue is empty!";
        return -999;
    }

    if(stackB.empty()){
        while(!stackA.empty()){
            stackB.push((stackA.top()));
            stackA.pop();
        }
    }

    return stackB.top();
}

void A005::test() {
    add(2);
    add(3);
    std::cout << peek() << std::endl;
    add(4);
    add(5);
    std::cout << poll() << std::endl;
    add(6);
    std::cout << poll() << std::endl;
    std::cout << poll() << std::endl;
    std::cout << poll() << std::endl;
    std::cout << poll() << std::endl;
    add(7);
    std::cout << poll() << std::endl;
    std::cout << poll() << std::endl;

}